/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.empresa.Fornecedor;
import br.com.deployment.entidade.localidade.Endereco;
import br.com.deployment.interfaces.FornecedorDaoIn;
import br.com.deployment.servico.CidadeServico;
import br.com.deployment.servico.FornecedorServico;
import br.com.deployment.utilitario.Caracteres;
import br.com.deployment.utilitario.Msg;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 *
 * @author luciano
 */
@Stateless
@LocalBean
public class FornecedorServicoImpl implements FornecedorServico{
    
    @EJB
    FornecedorDaoIn dao;
   
    @EJB
    CidadeServico cidadeDao; 
    
    @Override
    public void salvar(Fornecedor fornecedor) {
        try {
            Endereco endereco = fornecedor.getEndereco();
            if (endereco != null) {
                endereco.setCidade(cidadeDao.find(endereco.getCidade().getCod_cidade()));
                endereco.setEstado(endereco.getCidade().getCod_estado());
                endereco.setTelefone(Caracteres.removecaracter(endereco.getTelefone()));
                endereco.setCelular(Caracteres.removecaracter(endereco.getCelular()));
                endereco.setCep(Caracteres.removecaracter(endereco.getCep()));
                fornecedor.setEndereco(endereco);
            }
           fornecedor.setCnpj(Caracteres.removecaracter(fornecedor.getCnpj()));
           dao.save(fornecedor);
        } catch (Exception e) {
            Msg.messagemError("Erro ao salvar fornecedor.");
        }
    }

    @Override
    public void atualizar(Fornecedor fornecedor) {
        try {
            Endereco endereco = fornecedor.getEndereco();
            if (endereco != null) {
                endereco.setCidade(cidadeDao.find(endereco.getCidade().getCod_cidade()));
                endereco.setEstado(endereco.getCidade().getCod_estado());
                endereco.setTelefone(Caracteres.removecaracter(endereco.getTelefone()));
                endereco.setCelular(Caracteres.removecaracter(endereco.getCelular()));
                endereco.setCep(Caracteres.removecaracter(endereco.getCep()));
                fornecedor.setEndereco(endereco);
            }
            fornecedor.setCnpj(Caracteres.removecaracter(fornecedor.getCnpj()));
            dao.update(fornecedor);
        } catch (Exception e) {
             Msg.messagemError("Erro ao atualizar fornecedor.");
        }
    }

    @Override
    public void remover(Fornecedor fornecedor) {
        try {
            dao.delete(fornecedor);
        } catch (Exception e) {
             Msg.messagemError("Erro ao remover fornecedor.");
        }
    }

    @Override
    public Fornecedor find(int id) {
        try {
            return dao.find(id);
        } catch (Exception e) {
             Msg.messagemError("Erro ao buscar fornecedor.");
        }
        return null;
    }

    @Override
    public List<Fornecedor> fornecedores() {
        try {
            return dao.findAll();
        } catch (Exception e) {
             Msg.messagemError("Erro ao buscar fornecedores.");
        }
        return null;
    }

    @Override
    public List<Fornecedor> findFornecedor(Fornecedor fornecedor) {
        try {
            return dao.findFornecedor(fornecedor);
        } catch (Exception e) {
             Msg.messagemError("Erro ao buscar fornecedor.");
        }
        return null;
    }
    
}
